home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / stdio / RCS / ftell.c,v < prev    next >
Text File  |  1991-12-02  |  4KB  |  193 lines

  1. head     1.5;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.5.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.5
  10. date     88.07.29.18.56.38;  author ouster;  state Exp;
  11. branches 1.5.1.1;
  12. next     1.4;
  13.  
  14. 1.4
  15. date     88.07.28.16.48.47;  author ouster;  state Exp;
  16. branches ;
  17. next     1.3;
  18.  
  19. 1.3
  20. date     88.07.25.13.12.55;  author ouster;  state Exp;
  21. branches ;
  22. next     1.2;
  23.  
  24. 1.2
  25. date     88.07.11.09.11.07;  author ouster;  state Exp;
  26. branches ;
  27. next     1.1;
  28.  
  29. 1.1
  30. date     88.06.10.16.23.52;  author ouster;  state Exp;
  31. branches ;
  32. next     ;
  33.  
  34. 1.5.1.1
  35. date     91.12.02.19.58.22;  author kupfer;  state Exp;
  36. branches ;
  37. next     ;
  38.  
  39.  
  40. desc
  41. @@
  42.  
  43.  
  44. 1.5
  45. log
  46. @Lint.
  47. @
  48. text
  49. @/* 
  50.  * ftell.c --
  51.  *
  52.  *    Source code for the "ftell" library procedure.
  53.  *
  54.  * Copyright 1988 Regents of the University of California
  55.  * Permission to use, copy, modify, and distribute this
  56.  * software and its documentation for any purpose and without
  57.  * fee is hereby granted, provided that the above copyright
  58.  * notice appear in all copies.  The University of California
  59.  * makes no representations about the suitability of this
  60.  * software for any purpose.  It is provided "as is" without
  61.  * express or implied warranty.
  62.  */
  63.  
  64. #ifndef lint
  65. static char rcsid[] = "$Header: ftell.c,v 1.4 88/07/28 16:48:47 ouster Exp $ SPRITE (Berkeley)";
  66. #endif not lint
  67.  
  68. #include "stdio.h"
  69. #include "fileInt.h"
  70. #include <sys/file.h>
  71.  
  72. extern long ftell(), lseek();
  73.  
  74. /*
  75.  *----------------------------------------------------------------------
  76.  *
  77.  * ftell --
  78.  *
  79.  *    This procedure returns the current access position in a file
  80.  *    stream, as a byte count from the beginning of the file.
  81.  *
  82.  * Results:
  83.  *    The return value is the location (measured in bytes from the
  84.  *    beginning of the file associated with stream) where the next
  85.  *    byte will be read or written.  If the stream doesn't
  86.  *    correspond to a file, or if there is an error during the operation,
  87.  *    then -1 is returned.
  88.  *
  89.  * Side effects:
  90.  *    None.
  91.  *
  92.  *----------------------------------------------------------------------
  93.  */
  94.  
  95. long
  96. ftell(stream)
  97.     register FILE *stream;
  98. {
  99.     int count;
  100.  
  101.     if ((stream->readProc != (void (*)()) StdioFileReadProc) ||
  102.     ((stream->flags & (STDIO_READ|STDIO_WRITE)) == 0)) {
  103.     return -1;
  104.     }
  105.  
  106.     count = lseek((int) stream->clientData, 0L, L_INCR);
  107.     if (count < 0) {
  108.     return -1;
  109.     }
  110.  
  111.     /*
  112.      * The code is different for reading and writing.  For writing,
  113.      * we add the system's idea of current position to the number
  114.      * of bytes waiting in the buffer.  For reading, subtract the
  115.      * number of bytes still available in the buffer from the system's
  116.      * idea of the current position.
  117.      */
  118.  
  119.     if (stream->writeCount > 0) {
  120.     count += stream->lastAccess + 1 - stream->buffer;
  121.     } else if (stream->readCount > 0) {
  122.     count -= stream->readCount;
  123.     }
  124.  
  125.     return(count);
  126. }
  127. @
  128.  
  129.  
  130. 1.5.1.1
  131. log
  132. @Initial branch for Sprite server.
  133. @
  134. text
  135. @d17 1
  136. a17 1
  137. static char rcsid[] = "$Header: /sprite/src/lib/c/stdio/RCS/ftell.c,v 1.5 88/07/29 18:56:38 ouster Exp $ SPRITE (Berkeley)";
  138. @
  139.  
  140.  
  141. 1.4
  142. log
  143. @Lint cleanup.
  144. @
  145. text
  146. @d17 1
  147. a17 1
  148. static char rcsid[] = "$Header: ftell.c,v 1.3 88/07/25 13:12:55 ouster Exp $ SPRITE (Berkeley)";
  149. d58 1
  150. a58 1
  151.     count = lseek((int) stream->clientData, 0, L_INCR);
  152. @
  153.  
  154.  
  155. 1.3
  156. log
  157. @Lint.
  158. @
  159. text
  160. @d17 1
  161. a17 1
  162. static char rcsid[] = "$Header: ftell.c,v 1.2 88/07/11 09:11:07 ouster Exp $ SPRITE (Berkeley)";
  163. d24 1
  164. a24 1
  165. extern long ftell();
  166. @
  167.  
  168.  
  169. 1.2
  170. log
  171. @Change to return long instead of int.
  172. @
  173. text
  174. @d17 1
  175. a17 1
  176. static char rcsid[] = "$Header: ftell.c,v 1.1 88/06/10 16:23:52 ouster Exp $ SPRITE (Berkeley)";
  177. d23 2
  178. @
  179.  
  180.  
  181. 1.1
  182. log
  183. @Initial revision
  184. @
  185. text
  186. @d17 1
  187. a17 1
  188. static char rcsid[] = "$Header: atoi.c,v 1.1 88/04/28 17:20:23 ouster Exp $ SPRITE (Berkeley)";
  189. d45 1
  190. a45 1
  191. int
  192. @
  193.